//package cn.wolfcode.wolf2w.business.service;
//
//
//import cn.wolfcode.wolf2w.business.config.DeepSeekProperties;
//import cn.wolfcode.wolf2w.business.domain.Strategy;
//import cn.wolfcode.wolf2w.business.dto.OpenAIChatRequest;
//import cn.wolfcode.wolf2w.business.dto.OpenAIChatResponse;
//import cn.wolfcode.wolf2w.business.dto.OpenAIMessage;
//import com.alibaba.fastjson2.JSON;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.HttpEntity;
//import org.springframework.http.HttpHeaders;
//import org.springframework.http.MediaType;
//import org.springframework.stereotype.Service;
//import org.springframework.web.client.RestTemplate;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.StringJoiner;
//
//@Service
//public class DeepSeekService {
//    @Autowired
//    private DeepSeekProperties deepSeekProperties;
//    @Autowired
//    private RestTemplate restTemplate;
//
//    /**
//     * 查询的deepseek获取结果
//     * 参数1：用户的基础问题
//     * 参数2：deepseek的应答结束
//     * */
//    public String askWithStrategies(String question, List<Strategy>  strategies){
////        return  "deepseek结果";
//        /**
//         * 功能：调用 buildSystemPrompt 方法，传入 strategies 参数，生成系统提示词
//         * 返回值：方法返回一个 String 类型的系统提示词内容
//         * 赋值：将生成的系统提示词赋值给 systemPrompt 变量
//         * **/
//        String systemPrompt =buildSystemPrompt(strategies);
//        /// 创建一个类型为 "system" 的消息
//        /// 系统消息用于设定AI助手的角色和行为模式
//        /// 在对话中通常只有一条系统消息，且位于消息列表开头
//        OpenAIMessage systemMessage = new OpenAIMessage("system", systemPrompt);
//        OpenAIMessage userMessage = new OpenAIMessage("user", question);
//
//        List<OpenAIMessage> messages = new ArrayList<>();
//        messages.add(systemMessage);
//        messages.add(userMessage);
//
//        OpenAIChatRequest requestBody = new OpenAIChatRequest();
//        requestBody.setMessages( messages);
//        requestBody.setModel(deepSeekProperties.getModel());  ///deepseekChat
//        requestBody.setTemperature(0.3);
//
//        HttpHeaders httpHeaders = new HttpHeaders();
//        httpHeaders.setContentType(MediaType.APPLICATION_JSON);
//        httpHeaders.setBearerAuth(deepSeekProperties.getApiKey());
//
//        HttpEntity<OpenAIChatRequest> httpEntity = new HttpEntity<>(requestBody, httpHeaders);
//
//        String url=deepSeekProperties.getBaseUrl()+"chat/completions";
//
//        /**
//         * 功能：使用 RestTemplate 发送 HTTP POST 请求，请求 deepseek 的 API 接口
//         * 参数1：请求的 URL
//         * 参数2：请求的 HTTP 头
//         * 参数3：请求的体
//         * 返回值：返回一个 OpenAIChatResponse 对象，该对象封装了 deepseek 的应答结果
//         * **/
//        OpenAIChatResponse response = restTemplate.postForObject(url, httpEntity, OpenAIChatResponse.class);
//        if (response == null
//            || response.getChoices() == null
//            || response.getChoices().isEmpty()){
//            return "(AI没有找到答案)";
//
//        }
//
//        OpenAIChatResponse.Choice choice = response.getChoices().get(0);
//        if(choice==null ||choice.getMessage()==null){
//            return "(AI没有找到答案)";
//        }
//        return choice.getMessage().getContent();
//
//    }
//
//    private String buildSystemPrompt(List<Strategy> strategies) {
//        ///创建 StringJoiner 对象，使用双换行符 \n\n 作为分隔符
//        ///用于连接多个字符串片段，每个片段之间保持空行间隔
//        StringJoiner joiner = new StringJoiner("\n\n");
//        /// 添加AI角色设定和行为指导
//        /// 明确要求AI基于提供的知识库回答，不编造数据
//        joiner.add("你是一名知名的导游，请基于提供的私有知识库片段进行回答，不要编造数据。若资料不足，请明确说明。\n\n"+
//                "以下是来自私有知识库的片段（JSON）：");
//        /// 遍历所有 Strategy 对象
//        /// 使用 JSON.toJSONString() 将每个策略对象转换为JSON字符串
//        /// 将JSON字符串添加到 joiner 中
//        for (Strategy strategy : strategies){
//            String jsonString = JSON.toJSONString(strategy);
//            joiner.add(jsonString);
//        }
//        /// 返回 joiner 的字符串表示
//        return joiner.toString();
//    }
//}
